<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <button>1</button>
    <button>2</button>
    <button>3</button>

    <script>

        const oBtns = document.querySelectorAll('button');

        // for(var i = 0 ; i < oBtns.length ; i++) {
        //     oBtns[i].onclick = function() {
        //         console.log(i);   // 3
        //     }
        // }

        // var 声明的这个i  是全局变量    
        // 事件处理函数是异步的  
        // 点击的时候，   此时所有同步代码执行完毕以后才会调用事件处理函数 ， 因此  i = 3


        // for(var i = 0 ; i < oBtns.length ; i++) {
        //     oBtns[i].onclick = fn
        // }

        // function fn() {
        //     console.log(i);
        // }

        // i是全局变量



        // 改造
        // for(var i = 0 ; i < oBtns.length ; i++) {
        //     oBtns[i].onclick = f(i) ;
        // }

        // function f(index) {
        //     function fn() {
        //         console.log(index);
        //     }
        //     return fn
        // }


        for(var i = 0 ; i < oBtns.length ; i++) {
            // 绑定事件         立即执行函数
            oBtns[i].onclick = (function(index){
                return function() {   // 才是真正的事件处理函数
                    console.log(index);
                }
            })(i)
        }


        // var i = 0;
        // oBtns[i].onclick = (function (index) {
        //     return function () {
        //         console.log(index);
        //     }
        // })(i)

        // i++;
        // oBtns[i].onclick = (function (index) {
        //     return function () {
        //         console.log(index);
        //     }
        // })(i)
        // i++;
        // oBtns[i].onclick = (function (index) {
        //     return function () {
        //         console.log(index);
        //     }
        // })(i)
    </script>

</body>

</html>